Project organized

James Peret 6 years ago
parent
commit
138f3d1ec8
4 changed files with 120 additions and 53 deletions
  1. 1 0
      .gitignore
  2. 110 26
      index.js
  3. 8 2
      package.json
  4. 1 25
      readme.md

+ 1 - 0
.gitignore

@@ -1,3 +1,4 @@
1 1
 
2 2
 node_modules
3 3
 test
4
+.DS_Store

+ 110 - 26
index.js

@@ -1,35 +1,80 @@
1
+#!/usr/bin/env node
2
+
3
+'use strict';
4
+
1 5
 var express = require('express')
2 6
 var app = express()
7
+var path = require('path');
8
+var fs = require('fs');
9
+
10
+app.engine('html', require('ejs').renderFile);
11
+app.set('view engine', 'html');
12
+//app.use('/public', express.static(path.join(__dirname + '/node_modules')));
13
+app.use(express.static('public'))
14
+
15
+
3 16
 
4 17
 var get_file = function(req, res){
5
-  fs = require('fs')
6
-  var path = ""
7
-  var file_type = ""
8
-  if(req.params['folder'] != undefined){
9
-    path = req.params['folder'] + "/"
18
+
19
+  var path = "";
20
+  var file_type = "";
21
+  var parts;
22
+  var extension;
23
+
24
+  if(req.params['folder_10'] != undefined){
25
+    path = path + req.params['folder_10'] + "/"
26
+  }
27
+  if(req.params['folder_9'] != undefined){
28
+    path = path + req.params['folder_9'] + "/"
29
+  }
30
+  if(req.params['folder_8'] != undefined){
31
+    path = path + req.params['folder_8'] + "/"
32
+  }
33
+  if(req.params['folder_7'] != undefined){
34
+    path = path + req.params['folder_7'] + "/"
35
+  }
36
+  if(req.params['folder_6'] != undefined){
37
+    path = path + req.params['folder_6'] + "/"
38
+  }
39
+  if(req.params['folder_5'] != undefined){
40
+    path = path + req.params['folder_5'] + "/"
10 41
   }
42
+  if(req.params['folder_4'] != undefined){
43
+    path = path + req.params['folder_4'] + "/"
44
+  }
45
+  if(req.params['folder_3'] != undefined){
46
+    path = path + req.params['folder_3'] + "/"
47
+  }
48
+  if(req.params['folder_2'] != undefined){
49
+    path = path + req.params['folder_2'] + "/"
50
+  }
51
+  if(req.params['folder_1'] != undefined){
52
+    path = path + req.params['folder_1'] + "/"
53
+  }
54
+  // Load file or look for index?
11 55
   if(req.params['file'] != undefined){
12
-    path = path + req.params['file']
13
-    parts = req.params['file'].split(".")
56
+    // Set filetype
57
+    path = path + req.params['file'];
58
+    parts = req.params['file'].split(".");
14 59
     extension = parts[parts.length - 1]
15 60
     if(extension == "md"){
16 61
       file_type = "markdown"
17 62
     }
63
+  } else {
64
+    // return index file if it exists
18 65
   }
19
-  fs.readFile(path, 'utf8', function (err,data) {
20
-    if (err) {
21
-      return console.log(err);
22
-    }
23
-    process_file(res, data, file_type)
24
-  });
25
-}
26
-
27
-var process_file = function(res, data, file_type){
66
+  // Action for each filetype
28 67
   if(file_type == "markdown"){
29
-    res.send(markdown_parser(data))
68
+    fs.readFile(path, 'utf8', function (err,data) {
69
+      if (err) {
70
+        return console.log(err);
71
+      }
72
+      res.render('index', { body: markdown_parser(data) });
73
+    });
30 74
   } else {
31
-    res.send(data)
75
+    res.sendFile( process.cwd() + "/" + path)
32 76
   }
77
+
33 78
 }
34 79
 
35 80
 var markdown_parser = function(data){
@@ -50,17 +95,56 @@ var markdown_parser = function(data){
50 95
   // var md = require('markdown-it')()
51 96
   //             .use(require('markdown-it-mathjax')());
52 97
 
53
-  var md = require('markdown-it')()
54
-        .use(require('markdown-it-math'), {
55
-            inlineOpen: '\(',
56
-            inlineClose: '\\)',
57
-            blockOpen: '\\[',
58
-            blockClose: '\\]'
59
-        })
98
+  var md = require('markdown-it')({
99
+      html: true,
100
+      linkify: true,
101
+      typographer: true
102
+    }).use(require('markdown-it-math'), {
103
+      inlineOpen: '\\(',
104
+      inlineClose: '\\)',
105
+      blockOpen: '\\[',
106
+      blockClose: '\\]'
107
+    }).use(require('markdown-it-highlightjs'), {auto: true, code: false})
60 108
   return md.render(data)
61 109
 }
62 110
 
63
-app.get('/:folder/:file', function (req, res) {
111
+app.get('/:folder_10/:folder_9/:folder_8/:folder_7/:folder_6/:folder_5/:folder_4/:folder_3/:folder_2/:folder_1/:file', function (req, res) {
112
+  get_file(req, res);
113
+})
114
+
115
+app.get('/:folder_9/:folder_8/:folder_7/:folder_6/:folder_5/:folder_4/:folder_3/:folder_2/:folder_1/:file', function (req, res) {
116
+  get_file(req, res);
117
+})
118
+
119
+app.get('/:folder_8/:folder_7/:folder_6/:folder_5/:folder_4/:folder_3/:folder_2/:folder_1/:file', function (req, res) {
120
+  get_file(req, res);
121
+})
122
+
123
+app.get('/:folder_7/:folder_6/:folder_5/:folder_4/:folder_3/:folder_2/:folder_1/:file', function (req, res) {
124
+  get_file(req, res);
125
+})
126
+
127
+app.get('/:folder_6/:folder_5/:folder_4/:folder_3/:folder_2/:folder_1/:file', function (req, res) {
128
+  get_file(req, res);
129
+})
130
+
131
+app.get('/:folder_5/:folder_4/:folder_3/:folder_2/:folder_1/:file', function (req, res) {
132
+  get_file(req, res);
133
+})
134
+
135
+app.get('/:folder_4/:folder_3/:folder_2/:folder_1/:file', function (req, res) {
136
+  get_file(req, res);
137
+})
138
+
139
+app.get('/:folder_3/:folder_2/:folder_1/:file', function (req, res) {
140
+  get_file(req, res);
141
+})
142
+
143
+app.get('/:folder_2/:folder_1/:file', function (req, res) {
144
+  get_file(req, res);
145
+})
146
+
147
+app.get('/:folder_1/:file', function (req, res) {
64 148
   get_file(req, res);
65 149
 })
66 150
 

+ 8 - 2
package.json

@@ -1,6 +1,6 @@
1 1
 {
2 2
   "name": "codex-server",
3
-  "version": "0.0.1",
3
+  "version": "0.0.2",
4 4
   "description": "A node file server with super powers.",
5 5
   "main": "index.js",
6 6
   "scripts": {
@@ -8,12 +8,18 @@
8 8
   },
9 9
   "author": "James Peret",
10 10
   "license": "ISC",
11
+  "bin": {
12
+    "codex": "./index.js"
13
+  },
11 14
   "dependencies": {
15
+    "ejs": "^2.5.6",
12 16
     "express": "^4.15.2",
13 17
     "markdown": "^0.5.0",
14 18
     "markdown-it": "^8.3.1",
19
+    "markdown-it-highlightjs": "^3.0.0",
15 20
     "markdown-it-math": "^4.0.1",
16 21
     "markdown-it-mathjax": "^2.0.0",
17
-    "marked": "^0.3.6"
22
+    "marked": "^0.3.6",
23
+    "mathjax": "^2.7.1"
18 24
   }
19 25
 }

+ 1 - 25
readme.md

@@ -1,25 +1 @@
1
-# Testing Markdown Parser
2
-
3
-This is a paragraph
4
-
5
-- A list
6
-- Of
7
-- Stuff
8
-
9
-Some Math maybe? \\( 5 + 5 \\)
10
-
11
-$$ 2 + 4^3 $$
12
-
13
-\\(5 + 5\\)
14
-
15
-\[
16
-a^{2} + b^2 = c^2
17
-\]
18
-
19
-Some text with inline math \\(a^{2} + b^2 = c^2\\)
20
-
21
-And block math
22
-
23
-\[
24
-e = sum_(n=0)^oo 1/n!
25
-\]
1
+# Codex Server